Node.js v22.6.0 부터 실험적으로 Typescript를 바로 실행하는 기능이 추가되었다. 방법은 간단한데,
우선
(1) nvm install 22.6.0 && nvm use 22.6.0
으로 Node.js 버전을 맞추고
(2) 테스트용 Typescript 코드를 작성 한 뒤,
console.log("Hello, World!");
/index.ts
(3) --experimental-strip-types
옵션과 함께 실행하면,
node --experimental-strip-types index.ts
(4) 된다.
이 생각이 들더라.
아래와 같이 코드를 짜서 돌려보니까,
import * as $ from "cheerio";
const html = "<h1>Hello World</h1>";
const $html = $.load(html);
console.log($html.html());
이런 에러가 났다.
~/Projects/test $ node --experimental-strip-types index.ts
(node:22487) ExperimentalWarning: Type Stripping is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
(node:22487) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///Users/root/Projects/test/index.ts is not specified and it doesn't parse as CommonJS.
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
To eliminate this warning, add "type": "module" to /Users/root/Projects/test/package.json.
<html><head></head><body><h1>Hello World</h1></body></html>
~/Projects/test $
(node:22487) [MODULE_TYPELESS_PACKAGE_JSON] 경고: 모듈 파일 형식:///Users/root/Projects/test/index.ts가 지정되지 않았으며 CommonJS로 구문 분석되지 않습니다.
모듈 구문이 감지되어 ES 모듈로 재파싱합니다. 이로 인해 성능 오버헤드가 발생합니다.
이 경고를 제거하려면 /Users/root/Projects/test/package.json에 "type": "모듈"을 추가합니다.
이제 Node.js 생태계도 적극적으로 ESM을 따르나보다.
"type": "module"
을 추가해주면,
{
"type": "module",
"dependencies": {
"cheerio": "1.0.0"
}
}
에러 없이 잘 된다.
~/Projects/test $ node --experimental-strip-types index.ts
(node:22545) ExperimentalWarning: Type Stripping is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
<html><head></head><body><h1>Hello World</h1></body></html>
~/Projects/test $